2023.4.23 修正
ウィンドウサイズの決定と減退係数の決定
取引量のボラに基づいて算出
code: python
log_returns_volume = np.log(df'volume' / df'volume'.shift(1))
volume_volatility = log_returns_volume.std()
if volume_volatility > high_volatility_threshold:
window_size = short_window_size
elif volume_volatility < low_volatility_threshold:
window_size = long_window_size
else:
# 中間レベルのボラティリティの場合、適切なウィンドウサイズを選択
window_size = intermediate_window_size
#ウィンドウに基づいて減退係数をきめ、EVMAを計算
alpha = 2 / (window_size + 1)
df'ema' = df'price'.ewm(alpha=alpha).mean()
減退係数α
ボラが高い場合は短いウィンドウ、ボラが低い場合は長いウィンドウを採用
上記の方法に、過去データと最新データの2つを組み合わせてバランスをとるParcl方式を融合
code:python
log_returns_volume = np.log(df'volume' / df'volume'.shift(1))
volume_volatility = log_returns_volume.std()
if volume_volatility > high_volatility_threshold:
window_size = 7
elif volume_volatility < low_volatility_threshold:
window_size = 30
else:
# 中間レベルのボラティリティの場合、適切なウィンドウサイズを選択(線形補間を利用)
window_size = 7 + (30 - 7) * ((volume_volatility high_volatility_threshold) / (low_volatility_threshold - high_volatility_threshold))**2
alpha = 2 / (window_size + 1)
W_ti = 1/alpha
W_si = 1 - W_ti
Index = (ps_i * w_si) + (pt_i * w_ti)